import { type App } from "vue"
import packageUtil from '../../package.json'
import {post,uploadFile} from "@/http/http"
import api from "@/http/api"
import {useToast} from 'vue-toastification'

//获取头像
const getAvatar = (img:string)=>{
    if(img!=null && img.length>0){
        return img
    }
    return require('../assets/default_avatar.png')
}

// 添加全局属性插件
export const globalProperties = {
    // 参数 会自动接收到安装本插件的应用实例
    install(app: App) {
        //用globalProperties这种方式是直接能在页中使用，但无法在ts中使用，需要引用，但引用完了还得用全部的app.config.globalProperties这种方式使用太麻烦了

        // 注册想在全局使用的方法和变量
        app.config.globalProperties.$env = process.env.NODE_ENV

        //获取头像
        app.config.globalProperties.$getAvatar = getAvatar

        // 用app.config.globalProperties这种方式在使用的时候引用还得写全，太麻烦了，还是用provide
        // app.config.globalProperties.$api = api
        // app.config.globalProperties.$post = post
        // app.config.globalProperties.$uploadFile = uploadFile

        app.config.globalProperties.$system = {
            description: packageUtil.description,
            version: packageUtil.version,
            copyright: packageUtil.copyright.replace("{{year}}",new Date().getFullYear()+""),
            companyName: packageUtil.companyName,
        }

        app.provide('$api', api)
        app.provide('$post', post)
        app.provide('$uploadFile', uploadFile)
        app.provide('$getAvatar', getAvatar)
        app.provide('$toast', useToast())
    }
}